package com.ycg.blog.service;

import com.ycg.blog.common.PageView;
import com.ycg.blog.common.R;
import com.ycg.blog.pojo.Article;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ycg.blog.pojo.dto.ArticleDto;
import com.ycg.blog.pojo.dto.PageCondition;
import com.ycg.blog.pojo.vo.ArticleInfoVo;
import com.ycg.blog.pojo.vo.ArticleVo;
import com.ycg.blog.pojo.vo.ContentArticleVo;
import com.ycg.blog.pojo.vo.StateVo;

/**
* @author lenovo
* @description 针对表【blog_article(文章信息)】的数据库操作Service
* @createDate 2024-03-02 12:05:04
*/
public interface ArticleService extends IService<Article> {

    /**
     * 添加文章信息, 包括分类和标签
     * @param articleDto
     * @return
     */
    R<String> addOrUpdateArticleInfo(ArticleDto articleDto);

    /**
     * 条件分页查询
     * @param pageCondition
     * @return
     */
    R<PageView<ArticleVo>> getArticleInfoList(PageCondition pageCondition);

    /**
     * 获取一篇文章的信息
     * @param articleId
     * @return
     */
    R<ArticleInfoVo> getArticleInfo(Integer articleId);

    /**
     * 获取指定分类下的文章
     * @param categoryName
     * @return
     */
    R<PageView<ContentArticleVo>> getContentArticleByCategoryName(Integer current, String categoryName);

    /**
     * 根据id获取客户端详情
     * @param articleId
     * @return
     */
    R<ArticleVo> getDetailArticle(Integer articleId);

    /**
     * 获取文章数, 分类数和标签数
     * @return
     */
    R<StateVo> getState();

    /**
     * 获取关于我分类下的文章id
     * @return
     */
    R<Integer> getAboutMeId();
}
